package flex.cc.order.manage.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import flex.cc.base.dto.LoginAuthDto;
import flex.cc.order.manage.dto.order.OrderMainEntity;
import flex.cc.order.manage.dto.vo.OrderMainVo;

/**
 * @author wkangle
 * @className OrderMainService
 * @description 服务单主表service
 * @time 2021-09-06 15:46:46
 */
public interface OrderMainService extends IService<OrderMainEntity> {

	/**
	 * @description 添加一条记录
	 * @param orderMainEntity
	 * @return
	 * @author wkangle
	 * @time 2021/09/08 0008 8:58
	 * @exception/throws
	 */
	int insert(OrderMainEntity orderMainEntity);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月7日下午3:20:34
	 * @desc 服务单催单次数记录+1
	 */
	Integer addUrgeCount(String orderNo, Date urgeTime, Date updateTime, String updater);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月7日下午8:40:41
	 * @desc 服务单分页查询
	 */
	IPage<OrderMainVo> queryOrderListWithPage(OrderMainVo orderMain, LoginAuthDto loginAuthDto);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月8日下午1:17:12
	 * @desc 服务单部分导出
	 */
	IPage<OrderMainVo> queryOrderListWithDataIds(OrderMainVo vo);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月8日下午6:13:27
	 * @desc 服务单全部导出
	 */
	IPage<OrderMainVo> exportOrder(OrderMainVo orderMain);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月8日下午7:25:16
	 * @desc 根据dataId集合查询催单信息
	 */
	List<OrderMainVo> queryMainByDataIds(OrderMainVo orderMain);

	/**
	 * @description 根据查询条件查询服务单主表信息
	 * @param params 查询条件
	 * @return
	 * @author wkangle
	 * @time 2021/09/08 0008 9:12
	 * @exception/throws
	 */
	OrderMainEntity	getOneByParams(Map<String, Object> params);

	/**
	 * @description 修改服务单状态
	 * @param dataId 服务单id
	 * @param status 状态
	 * @return
	 * @author wkangle
	 * @time 2021/09/08 0008 17:31
	 * @exception/throws
	 */
	int updateStatus(String dataId, String status, Date updateTime, String updater);

	/**
	 * @description 更新
	 * @param orderMainEntity
	 * @return
	 * @author wkangle
	 * @time 2021/09/09 0009 13:34
	 * @exception/throws
	 */
	int update(OrderMainEntity orderMainEntity);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月10日下午6:01:30
	 * @desc 根据dataId更新延时标识
	 */
	int updateDelayedFlag(String dataId);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月28日上午8:51:24
	 * @desc 去除延时标识
	 */
	int delDelayedFlag(String dataId);

	/**
	 *
	 * @author WANGCONG
	 * 2021年9月28日上午10:22:36
	 * @desc 批量更新延时单标识
	 */
	int batchUpdateDalay(OrderMainVo orderMainVo);


	public List<Map<String, String>> querySearchAsync(OrderMainVo  vo);

	public OrderMainVo queryOrderByNo(OrderMainVo  vo);

	/**
	 *
	 * @author WANGCONG
	 * 2021年10月20日下午2:03:56
	 * @desc 根据dataId集合查询服务单的服务类型、省市区
	 */
	List<OrderMainVo> matchRule(OrderMainVo orderMain);

	IPage<OrderMainVo> queryOrderListInfoPage(OrderMainVo orderMainVo);

	OrderMainVo getRescueDetails(String orderNo);
	
	public String checkFwOrderStatus(OrderMainVo  vo);
	
	public void updateEvaluateByNo(OrderMainVo vo);

	Integer addOaUrgeCount(String orderNo, Date oaurgeTime, Date updateTime, String updater);

	/**
	 *
	 * @author WANGCONG
	 * 2022年1月6日下午3:01:15
	 * @desc 更新取消渠道来源字段信息
	 */
	int updateCancelChannel(String dataId, Date date, String cancelChannel);

	/**
	 *
	 * @author WANGCONG
	 * 2022年3月3日下午13:48:27
	 * @desc 根据来源单号查询实体信息
	 */
	OrderMainEntity queryByOwnerOrderNo(String ownerOrderNo);

}
